package com.example.springboot.service;

import com.example.springboot.entity.UserInfo;

/**
 * 用户服务接口
 */
/**
 * 用户服务接口
 * 定义与用户相关的业务操作，如用户登录验证、信息查询等功能
 * 作为控制层和数据访问层之间的桥梁，封装业务逻辑
 */
public interface UserService {

    /**
     * 用户登录验证
     * 根据用户账号和密码验证用户身份
     * 
     * @param userAccount  用户账号，用于查询用户信息
     * @param userPassword 用户密码，用于验证用户身份
     * @return 验证成功返回用户信息对象，验证失败返回null
     */
    UserInfo login(Long userAccount, Long userPassword);

    /**
     * 用户注册
     * 创建新用户并保存到数据库
     * 
     * @param userInfo 用户信息对象，包含用户的所有注册信息
     * @return 注册成功返回保存后的用户信息对象，注册失败返回null
     */
    UserInfo register(UserInfo userInfo);

    /**
     * 更新用户信息
     * 根据用户ID更新用户信息
     * 
     * @param userInfo 包含更新信息的用户对象
     * @return 更新成功返回更新后的用户信息对象，更新失败返回null
     */
    UserInfo updateUserInfo(UserInfo userInfo);

    /**
     * 检查用户账号是否已存在
     * 
     * @param userAccount 用户账号
     * @return 如果账号已存在返回true，否则返回false
     */
    boolean isAccountExists(Long userAccount);

    /**
     * 根据用户ID查找用户
     * 
     * @param userId 用户ID
     * @return 查询到的用户信息对象，如果不存在则返回null
     */
    UserInfo findUserById(Integer userId);
}